package com.mazewei.controller;

import com.mazewei.service.UserService;
import com.mazewei.stock.pojo.entity.SysUser;
import com.mazewei.vo.req.LoginReqVo;
import com.mazewei.vo.resp.LoginRespVo;
import com.mazewei.vo.resp.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/api")
@Api(tags = "用户相关接口处理器")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 根据用户名获取用户信息
     *
     * @param name 用户名，用于查询特定用户
     * @return 返回查询到的用户对象
     */
    @ApiOperation(value = "根据用户名获取用户信息")
    @ApiImplicitParam(name = "name", value = "用户名", required = true, dataType = "String", paramType = "path")
    @GetMapping("/user/{userName}")

    public SysUser getUserByUserName(@PathVariable("userName") String name) {
        return userService.findUserName(name);
    }

    /**
     * 处理用户登录请求
     *
     * @param vo 登录请求参数，包括用户名和密码
     * @return 返回登录结果，包括成功与否和用户信息
     */
    @ApiOperation(value = "处理用户登录请求")
    @PostMapping("/login")
    public R<LoginRespVo> login(@RequestBody LoginReqVo vo) {
        return userService.login(vo);
    }

    /**
     * 获取验证码
     * <p>
     * 该方法用于处理获取验证码的请求，通过调用 userService 的 getCaptchaCode 方法来实现
     * 验证码通常用于用户注册、登录或找回密码等场景，以确保请求是由真实用户发起的
     *
     * @return 返回一个包含验证码信息的 R<Map> 对象，R 是一个封装了返回结果的通用类
     */
    @ApiOperation(value = "获取验证码")
    @GetMapping("/captcha")
    public R<Map> getCaptchaCode() {
        return userService.getCaptchaCode();
    }

}
